/**
 * 开关组件尺寸类型
 */
export type SwitchSize = 'small' | 'medium' | 'large';

/**
 * 开关组件Props接口
 */
export interface SwitchProps {
  /**
   * 是否选中（支持v-model）
   * @default false
   */
  modelValue?: boolean | string;
  
  /**
   * 是否禁用
   * @default false
   */
  disabled?: boolean;
  
  /**
   * 是否显示加载状态
   * @default false
   */
  loading?: boolean;
  
  /**
   * 开关标签
   * @default ''
   */
  label?: string;
  
  /**
   * 打开时的背景色
   * @default '#1989fa'
   */
  activeColor?: string;
  
  /**
   * 关闭时的背景色
   * @default '#dcdee0'
   */
  inactiveColor?: string;
  
  /**
   * 尺寸大小
   * @default 'medium'
   */
  size?: SwitchSize;
  
  /**
   * 打开时的值
   * @default true
   */
  activeValue?: string | number | boolean;
  
  /**
   * 关闭时的值
   * @default false
   */
  inactiveValue?: string | number | boolean;
}

/**
 * 开关组件事件接口
 */
export interface SwitchEvents {
  /**
   * 更新v-model绑定值
   */
  'update:modelValue': (value: boolean) => void;
  
  /**
   * 变更事件
   */
  'change': (value: boolean | string | number) => void;
  
  /**
   * 点击事件
   */
  'click': (event: Event) => void;
}

/**
 * 开关组件方法接口
 */
export interface SwitchMethods {
  /**
   * 获取当前选中状态
   */
  isChecked: () => boolean;
  
  /**
   * 设置选中状态
   */
  setChecked: (checked: boolean) => void;
  
  /**
   * 切换选中状态
   */
  toggle: () => void;
}